<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // NO.1
    // var n = 100
    // function foo(){
    //   n = 200
    // }
    // foo() 
    // console.log(n); //200,函数体种的代码不是定义新变量而是将上层作用域的n修改成200


    // NO.2
    // var n =100
    // function foo(){
    //   console.log(n); //undefined
    //   var n = 200
    //   console.log(n); //200
    // }

    // NO.3
    // var n = 200
    // function foo1() {
    //   console.log(n);
    // }
    // function foo2() {
    //   var n = 100
    //   console.log(n);
    //   foo1()
    // }
    // foo2() // 100 200

    // NO.4
    // var n = 200
    // function foo() {
    //   console.log(n);
    //   return //这个在调用的时候才会起到作用
    //   var n = 100;
    // }
    // foo() // undefined

    //NO.5
    //在开发中有时候会出现的错误
    function _foo() {
      message = 'Hello'
    }
    _foo()
    console.log(message); //没有用var关键字定义的变量相当于放在全局作用域中，所以结果为‘Hello’

    function foo() {
      var a = b = 100
    }
    foo()
    // console.log(a); //报错
    console.log(b) //100,相当于没用关键字定义，b会被放在全局作用域;
  </script>
</body>

</html>